// 泛型：在定义函数、接口或类的时候，不预先指定具体的类型，而在使用的时候再指定具体类型的一种特性
(() => {
  // 需求：定义一个函数，传入两个参数，第一参数是数据，第二个参数是数量，函数的作用：根据数量产生对应个数的数据，存放在一个数组中

  // 定义一个函数
  // 需求：可以传入任意类型的数据，返回来的是存储这个任意数据的数组
  // function createArray(value: any, count: number): any[] {
  //   const arr: any[] = [];
  //   for (let index = 0; index < count; index++) {
  //     arr.push(value);
  //   }
  //   return arr;
  // }
  // const arr1 = createArray(11, 3);
  // const arr2 = createArray("aa", 3);
  // console.log(arr1[0].toFixed(), arr2[0].split(""));

  // 使用函数泛型
  function createArray2<T>(value: T, count: number) {
    const arr: Array<T> = [];
    for (let index = 0; index < count; index++) {
      arr.push(value);
    }
    return arr;
  }
  const arr3 = createArray2<number>(11, 3);
  console.log(arr3[0].toFixed());
  // console.log(arr3[0].split('')) // error
  const arr4 = createArray2<string>("aa", 3);
  console.log(arr4[0].split(""));
  // console.log(arr4[0].toFixed()) // error
})();
